home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / pcboard / read100.zip / READ.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-05-23  |  8KB  |  691 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.3O (Encryption type II) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     String   STRING001
  33.     String   STRING002
  34.     String   STRING003
  35.     String   STRING004
  36.     String   STRING005
  37.     String   STRING006
  38.     String   STRING007
  39.     String   STRING008
  40.     String   STRING009
  41.     String   STRING010
  42.     String   STRING011
  43.     String   STRING012
  44.     String   STRING013
  45.     String   STRING014
  46.     String   TSTRING015(10)
  47.     String   TSTRING016(10)
  48.     String   STRING017
  49.     String   STRING018
  50.     String   STRING019
  51.     String   STRING020
  52.     String   STRING022
  53.     Declare  Function FUNCTION001(String STRING021) String
  54.     Declare  Procedure PROC001(Integer INTEGER011, Integer INTEGER012, Var Integer INTEGER013)
  55.     Declare  Procedure PROC002(Integer INTEGER014)
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59.     StartDisp 1
  60.     INTEGER007 = CurConf()
  61.     INTEGER008 = ReadLine(PCBDat(), 6)
  62.     INTEGER009 = ReadLine(PCBDat(), 7)
  63.     INTEGER006 = ReadLine(PCBDat(), 108)
  64.     INTEGER010 = ReadLine(PCBDat(), 131)
  65.     FCloseAll
  66.     FOpen 1, PPEPath() + "READ.CFG", 0, 0
  67.     FGet 1, STRING017
  68.     FGet 1, STRING018
  69.     FGet 1, STRING019
  70.     FGet 1, STRING020
  71.     FGet 1, STRING013
  72.     FGet 1, STRING014
  73.     FClose 1
  74.     STRING001 = PPEPath() + "READ" + String(PcbNode())
  75.     GetUser
  76.     Gosub LABEL019
  77.     BOOLEAN001 = 1
  78.     :LABEL001
  79.     If (TokCount() > 0) Then
  80.         STRING003 = Trim(Upper(GetToken()), " ")
  81.         Select Case (STRING003)
  82.             Case "A"
  83.                 BOOLEAN001 = 1
  84.                 BOOLEAN002 = 1
  85.                 Newline
  86.                 DispText 145, 256
  87.                 INTEGER003 = U_Lmr(CurConf()) + 1
  88.             Case "L"
  89.                 BOOLEAN001 = 0
  90.                 INTEGER003 = HiMsgNum()
  91.             Case "Y"
  92.                 BOOLEAN001 = 1
  93.                 BOOLEAN003 = 1
  94.                 INTEGER003 = U_Lmr(CurConf())
  95.             Case Else
  96.                 If (InStr(STRING003, "-") > 0) Then
  97.                     BOOLEAN001 = 0
  98.                     INTEGER003 = S2I(Trim(StripStr(STRING003, "-"), " "), 10)
  99.                 ElseIf (InStr(STRING003, "+") > 0) Then
  100.                     BOOLEAN001 = 1
  101.                     INTEGER003 = S2I(Trim(StripStr(STRING003, "+"), " "), 10)
  102.                 Else
  103.                     INTEGER003 = S2I(STRING003, 10)
  104.                 Endif
  105.             Else
  106.                 DispFile PPEPath() + "READMENU", 4
  107.                 InputStr STRING018, STRING003, 7, 79, Mask_Ascii(), 256 + 8
  108.                 Tokenize STRING003
  109.                 If (Trim(STRING003, " ") == "") Then
  110.                     PROC002(INTEGER007)
  111.                 Endif
  112.                 Goto LABEL001
  113.             Endif
  114.     End Select
  115.     :LABEL002
  116.     If (BOOLEAN003) Then
  117.         INTEGER003 = ScanMsgHdr(CurConf(), INTEGER003, 7, U_Alias)
  118.         If (INTEGER003 == -1) Then
  119.             PROC002(INTEGER007)
  120.         Endif
  121.     Endif
  122.     If (INTEGER003 > HiMsgNum()) Then
  123.         SetLmr CurConf(), HiMsgNum()
  124.         If (BOOLEAN002) Then
  125.             PROC001(CurConf(), INTEGER006, INTEGER003)
  126.         Endif
  127.     Endif
  128.     MsgToFile CurConf(), INTEGER003, STRING001
  129.     If (Exist(STRING001)) Goto LABEL004
  130.     If (INTEGER003 < LoMsgNum()) Then
  131.         If (BOOLEAN001) Then
  132.             INTEGER003 = INTEGER003 + 1
  133.             Goto LABEL002
  134.             Goto LABEL003
  135.         Endif
  136.         PROC002(INTEGER007)
  137.     Endif
  138.     :LABEL003
  139.     If (INTEGER003 > HiMsgNum()) Then
  140.         PROC002(INTEGER007)
  141.     Endif
  142.     If (BOOLEAN001) Then
  143.         INTEGER003 = INTEGER003 + 1
  144.     Else
  145.         INTEGER003 = INTEGER003 - 1
  146.     Endif
  147.     Goto LABEL002
  148.     :LABEL004
  149.     FOpen 2, STRING001, 0, 0
  150.     For INTEGER001 = 1 To 10
  151.         FGet 2, STRING003
  152.         STRING003 = FUNCTION001(STRING003)
  153.         If (INTEGER001 == 1) Then
  154.             STRING003 = Trim(STRING003, " ")
  155.             If (STRING003 == "") Then
  156.                 STRING012 = "N/A"
  157.                 Goto LABEL012
  158.             Endif
  159.             If (STRING003 == "*") Then
  160.                 STRING012 = "NO"
  161.                 If (BOOLEAN003) Goto LABEL006
  162.                 If (CurSec() >= INTEGER009) Goto LABEL006
  163.                 FClose 2
  164.                 Delete STRING001
  165.                 If (BOOLEAN001) Then
  166.                     INTEGER003 = INTEGER003 + 1
  167.                     Goto LABEL005
  168.                 Endif
  169.                 INTEGER003 = INTEGER003 - 1
  170.                 :LABEL005
  171.                 Goto LABEL002
  172.                 :LABEL006
  173.                 Goto LABEL012
  174.             Endif
  175.             If (STRING003 == "+") Then
  176.                 STRING012 = "YES"
  177.                 If (BOOLEAN003) Goto LABEL008
  178.                 If (CurSec() >= INTEGER009) Goto LABEL008
  179.                 FClose 2
  180.                 Delete STRING001
  181.                 If (BOOLEAN001) Then
  182.                     INTEGER003 = INTEGER003 + 1
  183.                     Goto LABEL007
  184.                 Endif
  185.                 INTEGER003 = INTEGER003 - 1
  186.                 :LABEL007
  187.                 Goto LABEL002
  188.                 :LABEL008
  189.                 Goto LABEL012
  190.             Endif
  191.             If (STRING003 == "-") Then
  192.                 STRING012 = "YES"
  193.                 Goto LABEL012
  194.             Endif
  195.             If (STRING003 == "~") Then
  196.                 STRING012 = "NO"
  197.                 If (CurSec() >= INTEGER008) Goto LABEL010
  198.                 FClose 2
  199.                 Delete STRING001
  200.                 If (BOOLEAN001) Then
  201.                     INTEGER003 = INTEGER003 + 1
  202.                     Goto LABEL009
  203.                 Endif
  204.                 INTEGER003 = INTEGER003 - 1
  205.                 :LABEL009
  206.                 Goto LABEL002
  207.                 :LABEL010
  208.                 Goto LABEL012
  209.             Endif
  210.             If (STRING003 == "`") Then
  211.                 STRING012 = "YES"
  212.                 If (CurSec() >= INTEGER008) Goto LABEL012
  213.                 FClose 2
  214.                 Delete STRING001
  215.                 If (BOOLEAN001) Then
  216.                     INTEGER003 = INTEGER003 + 1
  217.                     Goto LABEL011
  218.                 Endif
  219.                 INTEGER003 = INTEGER003 - 1
  220.                 :LABEL011
  221.                 Goto LABEL002
  222.             Endif
  223.             :LABEL012
  224.             Continue
  225.         Endif
  226.         If (INTEGER001 == 2) Then
  227.             STRING009 = STRING003
  228.             Continue
  229.         Endif
  230.         If (INTEGER001 == 3) Then
  231.             If (STRING003 == "0") Then
  232.                 STRING010 = "NONE"
  233.                 Goto LABEL013
  234.             Endif
  235.             STRING010 = STRING003
  236.             :LABEL013
  237.             Continue
  238.         Endif
  239.         If (INTEGER001 == 5) Then
  240.             STRING007 = STRING003
  241.             Continue
  242.         Endif
  243.         If (INTEGER001 == 6) Then
  244.             STRING008 = STRING003
  245.             Continue
  246.         Endif
  247.         If (INTEGER001 == 7) Then
  248.             STRING004 = STRING003
  249.             Continue
  250.         Endif
  251.         If (INTEGER001 == 9) Then
  252.             STRING005 = STRING003
  253.             Continue
  254.         Endif
  255.         If (INTEGER001 == 10) Then
  256.             STRING006 = STRING003
  257.         Endif
  258.     Next
  259.     If (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 10, "R")) Then
  260.         STRING011 = "YES"
  261.     Else
  262.         STRING011 = "NO"
  263.     Endif
  264.     Gosub LABEL022
  265.     While (STRING003 <> "Message Body:") Do
  266.         FGet 2, STRING003
  267.     EndWhile
  268.     DefColor
  269.     StartDisp 1
  270.     AnsiPos 0, 10
  271.     INTEGER004 = 10
  272.     :LABEL014
  273.     If (Ferr(2)) Goto LABEL015
  274.     FGet 2, STRING003
  275.     If (Left(STRING003, Len(STRING013)) == STRING013) Then
  276.         STRING003 = Right(STRING003, Len(STRING003) - Len(STRING013))
  277.         STRING003 = STRING014 + STRING003
  278.     Endif
  279.     PrintLn STRING003
  280.     INTEGER004 = INTEGER004 + 1
  281.     If (INTEGER004 == U_PageLen) Then
  282.         More
  283.         StartDisp 1
  284.         INTEGER004 = 1
  285.     Endif
  286.     Goto LABEL014
  287.     :LABEL015
  288.     FClose 2
  289.     Delete STRING001
  290.     STRING003 = ""
  291.     STRING012 = ReplaceStr(STRING017, "@CONF@", ConfInfo(CurConf(), 1))
  292.     InputStr STRING012, STRING003, 7, 79, Mask_Ascii(), 256 + 8
  293.     Select Case (StripStr(Left(StripStr(STRING003, " "), 1), " "))
  294.         Case ""
  295.             If (BOOLEAN001) Then
  296.                 INTEGER003 = INTEGER003 + 1
  297.             Else
  298.                 INTEGER003 = INTEGER003 - 1
  299.             Endif
  300.             Goto LABEL002
  301.         Case "+"
  302.             INTEGER003 = INTEGER003 + 1
  303.             BOOLEAN001 = 1
  304.             Goto LABEL002
  305.         Case "-"
  306.             INTEGER003 = INTEGER003 - 1
  307.             BOOLEAN001 = 0
  308.             Goto LABEL002
  309.         Case ">"
  310.             INTEGER006 = ReadLine(PCBDat(), 108)
  311.             FCloseAll
  312.             If (CurConf() == INTEGER006) Then
  313.                 PrintLn "@X0CN@X04o @X0Cm@X04ore @X0Cc@X04onferences @X0Ci@X04n @X0Ct@X04hat @X0Cd@X04irection@X0C!"
  314.                 Wait
  315.             Else
  316.                 PROC001(CurConf(), INTEGER006, INTEGER003)
  317.             Endif
  318.             Goto LABEL002
  319.         Case "<"
  320.             INTEGER006 = -1
  321.             If (CurConf() == 0) Then
  322.                 PrintLn "@X0CN@X04o @X0Cm@X04ore @X0Cc@X04onferences @X0Ci@X04n @X0Ct@X04hat @X0Cd@X04irection@X0C!"
  323.                 Wait
  324.             Else
  325.                 PROC001(CurConf(), INTEGER006, INTEGER003)
  326.             Endif
  327.             Goto LABEL002
  328.         Case "A"
  329.             Goto LABEL002
  330.         Case "D"
  331.             STRING002 = ""
  332.             If (OnLocal()) Then
  333.                 InputText "@X0FC@X07apture @X0FF@X07ile @X0FP@X07ath@X08: _", STRING002, 7, 79
  334.                 If (Right(STRING002, 1) == "\") Then
  335.                     STRING002 = STRING002 + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  336.                 Else
  337.                     STRING002 = STRING002 + "\" + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  338.                 Endif
  339.             Else
  340.                 STRING002 = TempPath() + Strip(Left(String(INTEGER003), 8) + ".CAP", " ")
  341.             Endif
  342.             MsgToFile CurConf(), INTEGER003, STRING001
  343.             FOpen 2, STRING001, 0, 0
  344.             While (STRING003 <> "Message Body:") Do
  345.                 FGet 2, STRING003
  346.             EndWhile
  347.             FOpen 3, STRING002, 1, 0
  348.             For INTEGER001 = 1 To INTEGER005
  349.                 FPutLn 3, RTrim(TSTRING016(INTEGER001), " ")
  350.             Next
  351.             :LABEL016
  352.             If (Ferr(2)) Goto LABEL017
  353.             FGet 2, STRING003
  354.             FPutLn 3, StripAtx(STRING003)
  355.             Goto LABEL016
  356.             :LABEL017
  357.             FCloseAll
  358.             Delete STRING001
  359.             If (OnLocal()) Goto LABEL018
  360.             Shell 1, STRING003, "ZMSEND.EXE", STRING002
  361.             Delete STRING002
  362.             :LABEL018
  363.             Wait
  364.             Goto LABEL002
  365.         Case "R"
  366.             If (BOOLEAN001) Then
  367.                 STRING003 = "+"
  368.             Else
  369.                 STRING003 = "-"
  370.             Endif
  371.             STRING003 = String(INTEGER003) + STRING003
  372.             STRING002 = TempPath() + "CALLED." + String(PcbNode())
  373.             FOpen 3, STRING002, 1, 3
  374.             FPut 3, PPEPath() + PPEName() + ".PPE " + STRING003
  375.             FClose 3
  376.             If (INTEGER003 > U_Lmr(CurConf())) Then
  377.                 SetLmr CurConf(), INTEGER003 - 1
  378.             Endif
  379.             PutUser
  380.             KbdStuff "REPLY " + String(INTEGER003) + "^M"
  381.             End
  382.         Case "L"
  383.             BOOLEAN001 = 0
  384.             INTEGER003 = HiMsgNum()
  385.             Goto LABEL002
  386.         Case "K"
  387.             If (CurSec() >= INTEGER010) Then
  388.                 If ((INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 7, U_Alias)) || (INTEGER003 == ScanMsgHdr(CurConf(), INTEGER003, 11, U_Alias))) Then
  389.                     KillMsg CurConf(), INTEGER003
  390.                     PrintLn STRING019 + String(INTEGER003)
  391.                     If (BOOLEAN001) Then
  392.                         INTEGER003 = INTEGER003 + 1
  393.                     Else
  394.                         INTEGER003 = INTEGER003 - 1
  395.                     Endif
  396.                 ElseIf (CurSec() == SysopSec()) Then
  397.                     KillMsg CurConf(), INTEGER003
  398.                     PrintLn STRING019 + String(INTEGER003)
  399.                     If (BOOLEAN001) Then
  400.                         INTEGER003 = INTEGER003 + 1
  401.                     Else
  402.                         INTEGER003 = INTEGER003 - 1
  403.                     Endif
  404.                 Else
  405.                     PrintLn STRING020 + String(INTEGER003)
  406.                     Goto LABEL002
  407.                 Endif
  408.             Else
  409.                 PrintLn STRING020 + String(INTEGER003)
  410.             Endif
  411.             Goto LABEL002
  412.         Case "P"
  413.             If (INTEGER003 > U_Lmr(CurConf())) Then
  414.                 SetLmr CurConf(), INTEGER003
  415.             Endif
  416.             PutUser
  417.             Tokenize "ALL"
  418.             Call PPEPath() + "ENTER.PPE"
  419.             End
  420.         Case "Q"
  421.             PROC002(INTEGER007)
  422.         Case "?"
  423.             DispFile PPEPath() + "READHLP", 4
  424.             Goto LABEL002
  425.         Case Else
  426.             INTEGER003 = S2I(STRING003, 10)
  427.             Goto LABEL002
  428.     End Select
  429.     End
  430.     :LABEL019
  431.     FOpen 1, PPEPath() + "READHDR" + LangExt(), 0, 0
  432.     INTEGER001 = 1
  433.     :LABEL020
  434.     If (Ferr(1)) Goto LABEL021
  435.     FGet 1, TSTRING015(INTEGER001)
  436.     INTEGER001 = INTEGER001 + 1
  437.     Goto LABEL020
  438.     :LABEL021
  439.     FClose 1
  440.     INTEGER005 = INTEGER001 - 1
  441.     Return
  442.     :LABEL022
  443.     For INTEGER002 = 1 To INTEGER005
  444.         STRING003 = TSTRING015(INTEGER002)
  445.         STRING003 = ReplaceStr(STRING003, "@TO@", STRING004)
  446.         STRING003 = ReplaceStr(STRING003, "@FROM@", STRING005)
  447.         STRING003 = ReplaceStr(STRING003, "@SUBJECT@", STRING006)
  448.         STRING003 = ReplaceStr(STRING003, "@DATE@", STRING007)
  449.         STRING003 = ReplaceStr(STRING003, "@TIME@", STRING008)
  450.         STRING003 = ReplaceStr(STRING003, "@CURMSGNUM@", STRING009)
  451.         STRING003 = ReplaceStr(STRING003, "@HIGHMSGNUM@", String(HiMsgNum()))
  452.         STRING003 = ReplaceStr(STRING003, "@REPLYTO@", STRING010)
  453.         STRING003 = ReplaceStr(STRING003, "@READ@", STRING012)
  454.         STRING003 = ReplaceStr(STRING003, "@REPLIED@", STRING011)
  455.         PrintLn STRING003
  456.         TSTRING016(INTEGER002) = ScrText(1, GetY() - 1, 80, 0)
  457.     Next
  458.     Return
  459.     End
  460.  
  461. ;------------------------------------------------------------------------------
  462.  
  463.     Function FUNCTION001(String STRING021) String
  464.  
  465.     Integer  INTEGER011
  466.  
  467.     FUNCTION001 = Right(STRING021, Len(STRING021) - 18)
  468.     If (Len(FUNCTION001) > 17) Then
  469.         FUNCTION001 = Left(FUNCTION001, 17)
  470.     Endif
  471.  
  472.     EndFunc
  473.  
  474.  
  475. ;------------------------------------------------------------------------------
  476.  
  477.     Procedure PROC001(Integer INTEGER011, Integer INTEGER012, Var Integer INTEGER013)
  478.  
  479.     :LABEL023
  480.     If (INTEGER012 == -1) Then
  481.         Goto LABEL027
  482.     Endif
  483.     INTEGER011 = INTEGER011 + 1
  484.     :LABEL024
  485.     If (ConfSel(INTEGER011)) Goto LABEL026
  486.     INTEGER011 = INTEGER011 + 1
  487.     If (INTEGER011 >= INTEGER012) Then
  488.         If (BOOLEAN002) Goto LABEL025
  489.         PrintLn "@X0CN@X04o @X0Cm@X04ore @X0Cc@X04onferences @X0Ci@X04n @X0Ct@X04hat @X0Cd@X04irection@X0C!"
  490.         Wait
  491.         :LABEL025
  492.         PROC002(INTEGER007)
  493.     Endif
  494.     Goto LABEL024
  495.     :LABEL026
  496.     Goto LABEL029
  497.     :LABEL027
  498.     INTEGER011 = INTEGER011 - 1
  499.     :LABEL028
  500.     If (ConfSel(INTEGER011)) Goto LABEL029
  501.     INTEGER011 = INTEGER011 - 1
  502.     If (INTEGER011 <= 0) Then
  503.         PROC002(INTEGER007)
  504.     Endif
  505.     Goto LABEL028
  506.     :LABEL029
  507.     If (Strip(ConfInfo(INTEGER011, 1), " ") == "") Then
  508.         Newline
  509.         Print "@X0CD@X04e-selecting @X0Cn@X04on-existant @X0Cc@X04onference@X08: @X0F'@X0B" + String(INTEGER011) + "@X0F'"
  510.         Log "De-sel. non-existant conf.: '" + String(INTEGER011) + "'", 0
  511.         ConfUnflag INTEGER011, 4 + 1 + 2
  512.         SetLmr CurConf(), 0
  513.         PutUser
  514.         Goto LABEL023
  515.     Endif
  516.     Command 0, "JOIN " + String(INTEGER011) + ";Q"
  517.     INTEGER013 = U_Lmr(CurConf())
  518.     If (INTEGER013 >= HiMsgNum()) Then
  519.         DispText 78, 0
  520.         Goto LABEL023
  521.     Endif
  522.  
  523.     EndProc
  524.  
  525.  
  526. ;------------------------------------------------------------------------------
  527.  
  528.     Procedure PROC002(Integer INTEGER014)
  529.  
  530.     If (INTEGER003 > U_Lmr(CurConf())) Then
  531.         SetLmr CurConf(), INTEGER003
  532.     Endif
  533.     If (INTEGER014 <> CurConf()) Then
  534.         Command 0, "JOIN " + String(INTEGER014) + ";Q"
  535.     Endif
  536.     PutUser
  537.     End
  538.  
  539.     EndProc
  540.  
  541.  
  542. ;------------------------------------------------------------------------------
  543. ;
  544. ; Usage report (before postprocessing)
  545. ;
  546. ; ■ Statements used :
  547. ;
  548. ;    5       End
  549. ;    1       More
  550. ;    4       Wait
  551. ;    174     Goto 
  552. ;    109     Let 
  553. ;    1       Print 
  554. ;    9       PrintLn 
  555. ;    90      If 
  556. ;    1       ConfUnflag 
  557. ;    2       DispFile 
  558. ;    6       FOpen 
  559. ;    8       FClose 
  560. ;    12      FGet 
  561. ;    1       FPut 
  562. ;    2       FPutLn 
  563. ;    3       StartDisp 
  564. ;    1       GetUser
  565. ;    4       PutUser
  566. ;    1       DefColor
  567. ;    7       Delete 
  568. ;    1       Log 
  569. ;    2       InputStr 
  570. ;    2       Gosub 
  571. ;    2       Return
  572. ;    2       Newline
  573. ;    2       Tokenize 
  574. ;    1       Shell 
  575. ;    2       DispText 
  576. ;    1       InputText 
  577. ;    1       KbdStuff 
  578. ;    1       Call 
  579. ;    1       AnsiPos 
  580. ;    5       SetLmr 
  581. ;    3       FCloseAll
  582. ;    2       EndProc
  583. ;    1       EndFunc
  584. ;    2       MsgToFile 
  585. ;    2       Command 
  586. ;    2       KillMsg 
  587. ;
  588. ;
  589. ; ■ Functions used :
  590. ;
  591. ;    3       -
  592. ;    58      +
  593. ;    16      -
  594. ;    44      ==
  595. ;    3       <>
  596. ;    4       <
  597. ;    4       <=
  598. ;    9       >
  599. ;    13      >=
  600. ;    90      !
  601. ;    6       &&
  602. ;    4       ||
  603. ;    5       Len(
  604. ;    1       Upper()
  605. ;    18      Left()
  606. ;    3       Right()
  607. ;    3       Ferr()
  608. ;    2       InStr()
  609. ;    1       RTrim()
  610. ;    5       Trim()
  611. ;    1       StripAtx()
  612. ;    4       Strip()
  613. ;    16      String()
  614. ;    2       Mask_Ascii()
  615. ;    27      CurConf()
  616. ;    5       PCBDat()
  617. ;    7       PPEPath()
  618. ;    2       PcbNode()
  619. ;    5       ReadLine()
  620. ;    1       SysopSec()
  621. ;    2       OnLocal()
  622. ;    6       CurSec()
  623. ;    1       GetToken()
  624. ;    1       Exist()
  625. ;    4       S2I()
  626. ;    1       LangExt()
  627. ;    1       GetY()
  628. ;    1       PPEName()
  629. ;    2       TempPath()
  630. ;    1       TokCount()
  631. ;    1       ScrText()
  632. ;    11      ReplaceStr()
  633. ;    28      StripStr()
  634. ;    2       ConfSel()
  635. ;    6       U_Lmr()
  636. ;    1       LoMsgNum()
  637. ;    7       HiMsgNum()
  638. ;    4       ScanMsgHdr()
  639. ;    2       ConfInfo()
  640. ;
  641. ;------------------------------------------------------------------------------
  642. ;
  643. ; Analysis flags : FWSCds
  644. ;
  645. ; F - Change conference flags status ■ 2
  646. ;     This may be normal for a SELECT replacement but it may also be
  647. ;     a way to get access to conferences a user is not allowed to.
  648. ;     ■ Search for : CONFFLAG, CONFUNFLAG
  649. ;
  650. ; W - Write user ■ 5
  651. ;     Program writes a user record. Although this may be normal for a
  652. ;     User Editor, it may also be a way to modify an account level.
  653. ;     ■ Search for : PUTUSER
  654. ;
  655. ; S - Shell to DOS ■ 5
  656. ;     This may be normal if the PPE need to execute an external command,
  657. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  658. ;     or usefull (sorting, maintenance,...). Check!
  659. ;     ■ Search for : SHELL
  660. ;
  661. ; C - Call child PPE ■ 3
  662. ;     This is usually normal, but may be a tricky way to launch some
  663. ;     sysop-only commands.
  664. ;     ■ Search for : CALL
  665. ;
  666. ; d - Access PCBOARD.DAT ■ 2
  667. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  668. ;     for many PPE so they can find various informations on the system
  669. ;     (system paths, max number of lines in messages, ...) but it may also
  670. ;     be a way to gather vital informations.
  671. ;     ■ Search for : PCBDAT()
  672. ;
  673. ; s - Sysop level access ■ 5
  674. ;     Program is reading the sysop access level, this may be normal
  675. ;     but still it is very suspect. It is the best way to give a user
  676. ;     all priviledges. Check!
  677. ;     ■ Search for : SYSOPSEC()
  678. ;
  679. ;------------------------------------------------------------------------------
  680. ;
  681. ; Postprocessing report
  682. ;
  683. ;    3       For/Next
  684. ;    2       While/EndWhile
  685. ;    55      If/Then or If/Then/Else
  686. ;    2       Select Case
  687. ;
  688. ;------------------------------------------------------------------------------
  689. ;                 AEGiS Corp - Break the routines, code against the machines!
  690. ;------------------------------------------------------------------------------
  691.